#include "includes.h" 
#include <stdio.h>
#include <string.h>    
#include "OLED.h"

extern int speednow;
extern int Left,Right,coordinate;  
extern int point_flag,point_array[10];
extern unsigned int ss;
extern float spp,sdd;

/********************************************/ /*
函数名: Dis_Num(byte y, byte x, uint num,byte N) 
函数作用:显示动态的 无符号长整形 变量
输入参数: x       开始x坐标点    0~128
          y       开始y坐标点    0~8
          num   要输出的变量   无符号整形
          N       输出数字的位数 1~5
输出参数:
          无
*//********************************************/
void Dis_Num(byte y, byte x, uint num,byte N) 
{
 // byte line;
  byte j=0;
  byte n[6]={0};
  x=x*8;
  n[0]=(num/10000)%10; 
  n[1]=(num/1000)%10;
  n[2]=(num/100)%10;
  n[3]=(num/10)%10;
  n[4]=num%10;
  n[5]='\0';
  for(j=0;j<5;j++) n[j]=n[j]+16+32;
  LCD_P8x16Str(x,y,&n[5-N]);//从ACSII码表中读取字节，然后写入液晶
}
/********************************************/ /*
函数名: Dis_Float(byte Y,byte X,double real,byte N) 
函数作用:显示动态的 双精度浮点型 变量
输入参数: x       开始x坐标点    0~128
          y       开始y坐标点    0~8
          real   要输出的变量   双精度浮点型
          N       输出数字的位数 1~5
输出参数:
          无
*//********************************************/
void Dis_Float(byte Y,byte X,double real,byte N) 
{
   byte   i_Count=1;
   byte   n[12]={0};
   long   j=1;  
   uint   real_int=0;
   double decimal=0;
   uint   real_decimal=0;
   X=X*8;
   if(real>=0) 
   {
   real_int=(int)real;
   //Dis_Num(2,0,real_int,5);
   decimal=real-real_int;
   real_decimal=(uint)(decimal*1e4);
   //Dis_Num(2,6,real_decimal,4);
   while(real_int/10/j!=0)
   {
      j=j*10;i_Count++;  
   }
   n[0]=(real_int/10000)%10; 
   n[1]=(real_int/1000)%10;
   n[2]=(real_int/100)%10;
   n[3]=(real_int/10)%10;
   n[4]=(real_int)%10; 
   n[5]='.';
   n[6]=(real_decimal/1000)%10;
   n[7]=(real_decimal/100)%10;
   n[8]=(real_decimal/10)%10;
   n[9]=real_decimal%10;
   n[6+N]='\0'; 
   for(j=0;j<10;j++) n[j]=n[j]+16+32;
   n[5]='.';
   n[6+N]='\0'; 
   
   LCD_P8x16Str(X,Y,&n[5-i_Count]); 
   } 
   else
   {
     real=-real;
     real_int=(int)real;
   //Dis_Num(2,0,real_int,5);
   decimal=real-real_int;
   real_decimal=(uint)(decimal*1e4);
   //Dis_Num(2,6,real_decimal,4);
   while(real_int/10/j!=0)
   {
      j=j*10;i_Count++;  
   }
   n[0]=(real_int/10000)%10; 
   n[1]=(real_int/1000)%10;
   n[2]=(real_int/100)%10;
   n[3]=(real_int/10)%10;
   n[4]=(real_int)%10; 
   n[5]='.';
   n[6]=(real_decimal/1000)%10;
   n[7]=(real_decimal/100)%10;
   n[8]=(real_decimal/10)%10;
   n[9]=real_decimal%10;
   n[6+N-1]='\0'; 
   for(j=0;j<10;j++) n[j]=n[j]+16+32;
   n[5]='.';
   n[6+N-1]='\0'; 
   LCD_P8x16Str(X,Y,"-");
   LCD_P8x16Str(X+5,Y,&n[5-i_Count]); 
   }
}

void OLED_display(void) 
{
  int i;                                  
  // LCD_CLS();
   Dis_Float(0,0,spp,1); 
   Dis_Float(0,5,sdd,1);
   Dis_Num(0,10,ss,3);
  // Dis_Num(0,8,speednow,3);
   Dis_Float(2,0,Left,0);
   Dis_Num(2,5,Right,3);
   Dis_Float(2,10,coordinate,0);
   for(i=1;i<point_flag+2;i++) 
   {
     Dis_Num(4,(i-1)*3,point_array[i],3);
   }
   LCD_P6x8Str(0,6,"-.- ");
   Dis_Num(6,5,point_flag,1);

}


